package com.jiuqi.njt.management.task;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import com.jiuqi.mobile.nigo.comeclose.bean.app.file.RepairsFileBean;
import com.jiuqi.njt.management.FregmentFileRepair.TaskFinished;
import com.jiuqi.njt.management.task.MyMultipartEntity.ProgressListener;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.DateUtil;
import com.jiuqi.njt.util.RepairUtils;
import com.jiuqi.njt.util.UIUtil;
import com.jqyd.camera.library.PhotoDisplayBlock;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
/**
* 新增维修报修数据上传(包含图片)
* @author
*
*/
public class AddHttpMultipartPost extends AsyncTask<String, Integer, String> {
private Context context;
private ProgressDialog pd;
private long totalSize;
private Bundle bundle;
private RepairsFileBean bean;
private PhotoDisplayBlock photoDisplayBlock;
private String pic_sort;
private Map<String, String> postParams = new HashMap<String, String>();
private String actionUrl = Constants.SERVER_URL+"/ms/repairsFile!createRepairsFile.action";
private TaskFinished taskFinished;
public AddHttpMultipartPost(Context context, RepairsFileBean bean,
PhotoDisplayBlock photoDisplayBlock, String pic_sort,TaskFinished taskFinished) {
super();
this.context = context;
this.bean = bean;
this.photoDisplayBlock = photoDisplayBlock;
this.pic_sort = pic_sort;
this.taskFinished = taskFinished;
}
@Override
protected void onPreExecute() {
pd = new ProgressDialog(context);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("正在上传数据请稍后。。。");
pd.setCancelable(false);
pd.show();
}
@Override
protected String doInBackground(String... params) {
String serverResponse = "";
HttpClient httpClient = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(actionUrl);
upToServer(bundle, bean, photoDisplayBlock, pic_sort);
try {
MyMultipartEntity multipartContent = new MyMultipartEntity(
new ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
if (params != null && !postParams.isEmpty()) {
for (Map.Entry<String, String> entry : postParams.entrySet()) {
StringBody par = null;
try {
if (entry.getValue() == null) {
continue;
}
par = new StringBody(java.net.URLEncoder.encode(
entry.getValue(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
multipartContent.addPart(entry.getKey(), par);
}
}
for (int i = 0; i < photoDisplayBlock.getPhotos().size(); i++) {
FileBody file = new FileBody(new File(photoDisplayBlock.getPhotos().get(i).getPath()));
multipartContent.addPart("imageFile", file);
}
// We use FileBody to transfer an image
totalSize = multipartContent.getContentLength();
// Send it
httpPost.setEntity(multipartContent);
HttpResponse response = httpClient.execute(httpPost, httpContext);
int res = response.getStatusLine().getStatusCode();
Log.e("图片上传返回相应码", res + ",");
switch (res) {
case 200:
serverResponse = "数据上传成功";
break;
case 404:
serverResponse = "数据上传失败,请重试";
break;
default:
serverResponse = "数据上传失败,请重试";
}
//
} catch (Exception e) {
serverResponse = "数据上传失败,请重试";
e.printStackTrace();
}
return serverResponse;
}
@Override
protected void onProgressUpdate(Integer... progress) {
pd.setProgress((int) (progress[0]));
}
@Override
protected void onPostExecute(String result) {
pd.dismiss();
UIUtil.showMsg(context, result);
if("数据上传成功".equals(result)){
taskFinished.whenTaskFinish();
}
}
@Override
protected void onCancelled() {
System.out.println("cancle");
}
public String upToServer(Bundle bundle, RepairsFileBean bean, PhotoDisplayBlock photoDisplayBlock, String pic_sort) {
if (pic_sort.equals("xzpg")) {
postParams.put("repairsFileBean.guid", bean.getGuid());
postParams.put("repairsFileBean.repairManName", bean.getRepairManName());
postParams.put("repairsFileBean.repairManMobile", bean.getRepairManMobile());
postParams.put("repairsFileBean.repairManPhone", bean.getRepairManPhone());
postParams.put("repairsFileBean.factoryName", bean.getFactoryName());
postParams.put("repairsFileBean.brandName", bean.getBrandName());
postParams.put("repairsFileBean.productName", bean.getProductName());
postParams.put("repairsFileBean.modelName", bean.getModelName());
postParams.put("repairsFileBean.repairsAddress", bean.getRepairsAddress());
postParams.put("repairsFileBean.troubleDetail", bean.getTroubleDetail());
postParams.put("repairsFileBean.addPersonGuid", bean.getAddPersonGuid());
postParams.put("repairsFileBean.repairType", bean.getRepairType()+"");
postParams.put("repairsFileBean.repairGuid", bean.getRepairGuid());
postParams.put("repairsDate", DateUtil.getTimeStamp( bean.getRepairsDate(), DateUtil.YYYY_MM_DD));
postParams.put("madeDate", DateUtil.getTimeStamp( bean.getMadeDate(), DateUtil.YYYY_MM_DD));
postParams.put("buyDate", DateUtil.getTimeStamp( bean.getBuyDate(), DateUtil.YYYY_MM_DD));
postParams.put("repairsFileBean.longitude", bean.getLongitude()+"");
postParams.put("repairsFileBean.latitude", bean.getLatitude()+"");
postParams.put("repairsFileBean.repairsNO", RepairUtils.getDateString());
postParams.put("repairsFileBean.repairsFileNO", RepairUtils.getFileNo(context));
postParams.put("flag", pic_sort);
}
return null;
}
}